Integration overview
Reading protocol state and separating a position from a contract.
EXDATE is designed to be called. Separating a position, pricing a claim and settling an outcome are all callable operations.
Separating from a contract
(uint256 principal, uint256 rights) =
exdate.split(asset, amount, eventId);The call transfers the underlying into the event vault and mints the pair to the caller. Both return values equal the amount deposited; they are returned separately because the two tokens have different addresses.
Recombining
uint256 underlying =
exdate.recombine(eventId, amount);Redeeming a settled distribution
uint256 received =
exdate.redeem(eventId, rightsAmount);Reading event state
interface MarketDataAdapter {
listEvents(at?: number): MarketRow[];
getEvent(id: string, at?: number): MarketRow | undefined;
query(q: MarketQuery, at?: number): MarketRow[];
totals(at?: number): ProtocolTotals;
}The application reads all protocol state through adapters with these shapes. In this preview environment they resolve against a deterministic engine; against a deployed protocol they resolve against an indexer and the contracts, without the interface changing.
The contract suite is not yet deployed. The signatures above describe the intended interface. Addresses and ABIs are published here once contracts are deployed and verified.