@the-situation/sdk
v0.14.0
Published
High-level SDK for The Situation prediction markets on Starknet
Downloads
643
Readme
@the-situation/sdk
High-level TypeScript SDK for The Situation normal-distribution AMMs on Starknet.
This guide is intentionally focused on normal markets only (mean, variance, sigma).
Install
npm install @the-situation/sdk effectWhat You Provide / What You Get
Inputs:
- Starknet network (
sepoliaby default) - Normal market contract address
- Optional account credentials for write operations
Outputs:
getMarketInfo: current normal distribution and market stateprepareTrade: quoted trade calls + collateral estimateexecuteTrade: submitted transaction receipt + prepared trade details
1) Read-Only Setup (Normal Market)
import { Effect, Layer } from 'effect';
import {
ProviderLive,
MarketLive,
ReadModelsCachingLive,
getMarketInfo,
} from '@the-situation/sdk';
const readLayer = Layer.mergeAll(
ProviderLive({ network: 'sepolia' }),
MarketLive({ address: '0xYOUR_NORMAL_MARKET_ADDRESS' }),
ReadModelsCachingLive,
);
const info = await Effect.runPromise(
getMarketInfo.pipe(Effect.provide(readLayer)),
);
console.log('mean:', info.distribution.mean);
console.log('variance:', info.distribution.variance);
console.log('sigma:', info.distribution.sigma);
console.log('effectiveK:', info.effectiveK);2) Prepare a Trade (Quote Only)
Use this first to preview collateral and generated calls.
import { Effect } from 'effect';
import { prepareTrade } from '@the-situation/sdk';
const prepared = await Effect.runPromise(
prepareTrade({
targetMean: 105,
targetVariance: 144, // optional; omit for mean-only trade
bufferPercent: 1, // optional default
}).pipe(Effect.provide(readLayer)),
);
console.log(prepared.summary);
console.log('collateral:', prepared.collateral);
console.log('tokenAmount:', prepared.tokenAmount.toString());3) Execute a Trade
import { Effect, Layer } from 'effect';
import { AccountLive, executeTrade } from '@the-situation/sdk';
const tradeLayer = Layer.mergeAll(
readLayer,
AccountLive({
address: '0xYOUR_ACCOUNT_ADDRESS',
privateKey: process.env.STARKNET_PRIVATE_KEY!,
network: 'sepolia',
}),
);
const result = await Effect.runPromise(
executeTrade({
targetMean: 105,
targetVariance: 144,
}).pipe(Effect.provide(tradeLayer)),
);
console.log('tx hash:', result.transactionHash);
console.log('executed:', result.trade.summary);Notes
prepareTradeandexecuteTradeare for normal AMMs, not multinoulli markets.- All public operations are
Effectvalues; run them withEffect.runPromise(...). - Write operations require an
AccountLivelayer.
