@oddmaki-protocol/sdk 1.12.1 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +111 -1
- package/dist/index.d.ts +111 -1
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +99 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -12289,9 +12289,107 @@ function parseMetadata(json) {
|
|
|
12289
12289
|
}
|
|
12290
12290
|
}
|
|
12291
12291
|
|
|
12292
|
+
// src/utils/feeAwarePricing.ts
|
|
12293
|
+
var BPS_DENOMINATOR = 10000n;
|
|
12294
|
+
var OPERATOR_FEE_BPS = 10n;
|
|
12295
|
+
function getTotalFeeBps(fees) {
|
|
12296
|
+
return fees.protocolFeeBps + fees.venueFeeBps + (fees.operatorFeeBps ?? OPERATOR_FEE_BPS);
|
|
12297
|
+
}
|
|
12298
|
+
function ceilDiv(numerator, denominator) {
|
|
12299
|
+
return (numerator + denominator - 1n) / denominator;
|
|
12300
|
+
}
|
|
12301
|
+
function fullPriceTicks(tickSize) {
|
|
12302
|
+
return 10n ** 18n / tickSize;
|
|
12303
|
+
}
|
|
12304
|
+
function minBuyTickToCross(params) {
|
|
12305
|
+
const fullTicks = fullPriceTicks(params.tickSize);
|
|
12306
|
+
const minTotalTicks = ceilDiv(fullTicks * (BPS_DENOMINATOR + params.feeBps), BPS_DENOMINATOR);
|
|
12307
|
+
let best = null;
|
|
12308
|
+
if (params.sameOutcomeAskTick && params.sameOutcomeAskTick > 0n) {
|
|
12309
|
+
const tick = ceilDiv(
|
|
12310
|
+
params.sameOutcomeAskTick * (BPS_DENOMINATOR + params.feeBps),
|
|
12311
|
+
BPS_DENOMINATOR
|
|
12312
|
+
);
|
|
12313
|
+
if (tick > 0n && tick <= fullTicks) {
|
|
12314
|
+
best = { tick, price: tickToPrice(tick, params.tickSize), path: "normal" };
|
|
12315
|
+
}
|
|
12316
|
+
}
|
|
12317
|
+
if (params.oppositeOutcomeBidTick && params.oppositeOutcomeBidTick > 0n) {
|
|
12318
|
+
if (params.oppositeOutcomeBidTick < minTotalTicks) {
|
|
12319
|
+
const tick = minTotalTicks - params.oppositeOutcomeBidTick;
|
|
12320
|
+
if (tick > 0n && tick <= fullTicks) {
|
|
12321
|
+
if (!best || tick < best.tick) {
|
|
12322
|
+
best = { tick, price: tickToPrice(tick, params.tickSize), path: "mint" };
|
|
12323
|
+
}
|
|
12324
|
+
}
|
|
12325
|
+
}
|
|
12326
|
+
}
|
|
12327
|
+
return best;
|
|
12328
|
+
}
|
|
12329
|
+
function maxSellTickToCross(params) {
|
|
12330
|
+
const fullTicks = fullPriceTicks(params.tickSize);
|
|
12331
|
+
const maxMergeTotalTicks = fullTicks * (BPS_DENOMINATOR - params.feeBps) / BPS_DENOMINATOR;
|
|
12332
|
+
let best = null;
|
|
12333
|
+
if (params.sameOutcomeBidTick && params.sameOutcomeBidTick > 0n) {
|
|
12334
|
+
const tick = params.sameOutcomeBidTick;
|
|
12335
|
+
best = { tick, price: tickToPrice(tick, params.tickSize), path: "normal" };
|
|
12336
|
+
}
|
|
12337
|
+
if (params.oppositeOutcomeAskTick && params.oppositeOutcomeAskTick > 0n) {
|
|
12338
|
+
if (maxMergeTotalTicks > params.oppositeOutcomeAskTick) {
|
|
12339
|
+
const tick = maxMergeTotalTicks - params.oppositeOutcomeAskTick;
|
|
12340
|
+
if (tick > 0n && (!best || tick > best.tick)) {
|
|
12341
|
+
best = { tick, price: tickToPrice(tick, params.tickSize), path: "merge" };
|
|
12342
|
+
}
|
|
12343
|
+
}
|
|
12344
|
+
}
|
|
12345
|
+
return best;
|
|
12346
|
+
}
|
|
12347
|
+
function applyTakerFeeBuffer(askTick, feeBps, tickSize) {
|
|
12348
|
+
const fullTicks = fullPriceTicks(tickSize);
|
|
12349
|
+
const tick = ceilDiv(askTick * (BPS_DENOMINATOR + feeBps), BPS_DENOMINATOR);
|
|
12350
|
+
return tick > fullTicks ? fullTicks : tick;
|
|
12351
|
+
}
|
|
12352
|
+
function estimateBuyFromShares(shares, pricePerShare) {
|
|
12353
|
+
const safeShares = Math.max(0, Number.isFinite(shares) ? shares : 0);
|
|
12354
|
+
const safePrice = Math.max(0, Number.isFinite(pricePerShare) ? pricePerShare : 0);
|
|
12355
|
+
const cost = safeShares * safePrice;
|
|
12356
|
+
const payout = safeShares;
|
|
12357
|
+
return {
|
|
12358
|
+
shares: safeShares,
|
|
12359
|
+
cost,
|
|
12360
|
+
payout,
|
|
12361
|
+
profit: payout - cost,
|
|
12362
|
+
avgPrice: safePrice
|
|
12363
|
+
};
|
|
12364
|
+
}
|
|
12365
|
+
function estimateBuyFromAmount(amount, pricePerShare) {
|
|
12366
|
+
const safeAmount = Math.max(0, Number.isFinite(amount) ? amount : 0);
|
|
12367
|
+
const safePrice = Math.max(0, Number.isFinite(pricePerShare) ? pricePerShare : 0);
|
|
12368
|
+
if (safePrice <= 0) {
|
|
12369
|
+
return { shares: 0, cost: safeAmount, payout: 0, profit: -safeAmount, avgPrice: 0 };
|
|
12370
|
+
}
|
|
12371
|
+
const shares = safeAmount / safePrice;
|
|
12372
|
+
return {
|
|
12373
|
+
shares,
|
|
12374
|
+
cost: safeAmount,
|
|
12375
|
+
payout: shares,
|
|
12376
|
+
profit: shares - safeAmount,
|
|
12377
|
+
avgPrice: safePrice
|
|
12378
|
+
};
|
|
12379
|
+
}
|
|
12380
|
+
function estimateSellFromShares(shares, pricePerShare) {
|
|
12381
|
+
const safeShares = Math.max(0, Number.isFinite(shares) ? shares : 0);
|
|
12382
|
+
const safePrice = Math.max(0, Number.isFinite(pricePerShare) ? pricePerShare : 0);
|
|
12383
|
+
return {
|
|
12384
|
+
shares: safeShares,
|
|
12385
|
+
avgPrice: safePrice,
|
|
12386
|
+
proceeds: safeShares * safePrice
|
|
12387
|
+
};
|
|
12388
|
+
}
|
|
12389
|
+
|
|
12292
12390
|
// src/index.ts
|
|
12293
12391
|
var version = "0.1.0";
|
|
12294
12392
|
|
|
12295
|
-
export { AccessControlFacet_default as AccessControlFacetABI, AccessControlModule, BatchOrdersFacet_default as BatchOrdersFacetABI, CONTRACT_ADDRESSES, ConditionalTokens_default as ConditionalTokensABI, DEFAULT_CHAIN, ERC20_default as ERC20ABI, FeedProvider, GET_ALL_MARKETS_FEED, GET_ALL_MARKETS_FEED_BY_VOLUME, GET_CHART_TRADES, GET_CHART_TRADES_ALL, GET_GROUP_MARKETS, GET_LEADERBOARD, GET_MARKET, GET_MARKETS, GET_MARKETS_WITH_PRICING, GET_MARKET_GROUP, GET_MARKET_GROUPS, GET_MARKET_GROUP_ITEM, GET_MARKET_TOP_HOLDERS, GET_ORDERS, GET_PRICE_MARKET_SERIES, GET_PROTOCOL_STATS, GET_QUESTION, GET_QUESTIONS, GET_RECENT_MARKETS, GET_RECENT_TRADES, GET_TOP_OF_BOOK, GET_TRADER_CLOSED_POSITIONS, GET_TRADER_FILLS, GET_TRADER_POSITIONS, GET_TRADER_PROFILE, GET_TRADER_VENUE_CLOSED_POSITIONS, GET_TRADER_VENUE_FILLS, GET_TRADER_VENUE_POSITIONS, GET_TRADER_VENUE_PROFILE, GET_TRADES, GET_UNIFIED_MARKET_FEED, GET_UNIFIED_MARKET_FEED_BY_VOLUME, GET_USER, GET_VENUES, GET_VENUE_LEADERBOARD, LimitOrdersFacet_default as LimitOrdersFacetABI, MarketGroupFacet_default as MarketGroupFacetABI, MarketModule, MarketOrdersFacet_default as MarketOrdersFacetABI, MarketsFacet_default as MarketsFacetABI, MatchingFacet_default as MatchingFacetABI, MetadataFacet_default as MetadataFacetABI, NegRiskFacet_default as NegRiskFacetABI, OddMakiClient, OrderBookFacet_default as OrderBookFacetABI, PROTOCOL_FEES, PriceMarketFacet_default as PriceMarketFacetABI, PriceMarketModule, ProtocolFacet_default as ProtocolFacetABI, PublicModule, PythResolutionFacet_default as PythResolutionFacetABI, ResolutionFacet_default as ResolutionFacetABI, SUBGRAPH_IDS, SubgraphClient, TICK_SIZE_FINE, TICK_SIZE_STANDARD, TagsFacet_default as TagsFacetABI, TokenModule, TradeModule, UMA_DEFAULTS, UmaModule, UmaOracle_default as UmaOracleABI, VALID_TICK_SIZES, VaultFacet_default as VaultFacetABI, VenueFacet_default as VenueFacetABI, VenueModule, WhitelistAccessControl_default as WhitelistAccessControlABI, buildSubgraphGatewayUrl, calculateChancePercent, clearDecimalsCache, createExpiry, createOddMakiClient, formatAmount, formatAncillaryData, formatTimestamp, getCachedTokenDecimals, getOutcomePrice, getTokenDecimals, isValidTickSize, parseAmount, parseAncillaryData, parseMetadata, parseTokenAmount, priceToTick, resolveIPFSUri, tickToPercentage, tickToPrice, version };
|
|
12393
|
+
export { AccessControlFacet_default as AccessControlFacetABI, AccessControlModule, BPS_DENOMINATOR, BatchOrdersFacet_default as BatchOrdersFacetABI, CONTRACT_ADDRESSES, ConditionalTokens_default as ConditionalTokensABI, DEFAULT_CHAIN, ERC20_default as ERC20ABI, FeedProvider, GET_ALL_MARKETS_FEED, GET_ALL_MARKETS_FEED_BY_VOLUME, GET_CHART_TRADES, GET_CHART_TRADES_ALL, GET_GROUP_MARKETS, GET_LEADERBOARD, GET_MARKET, GET_MARKETS, GET_MARKETS_WITH_PRICING, GET_MARKET_GROUP, GET_MARKET_GROUPS, GET_MARKET_GROUP_ITEM, GET_MARKET_TOP_HOLDERS, GET_ORDERS, GET_PRICE_MARKET_SERIES, GET_PROTOCOL_STATS, GET_QUESTION, GET_QUESTIONS, GET_RECENT_MARKETS, GET_RECENT_TRADES, GET_TOP_OF_BOOK, GET_TRADER_CLOSED_POSITIONS, GET_TRADER_FILLS, GET_TRADER_POSITIONS, GET_TRADER_PROFILE, GET_TRADER_VENUE_CLOSED_POSITIONS, GET_TRADER_VENUE_FILLS, GET_TRADER_VENUE_POSITIONS, GET_TRADER_VENUE_PROFILE, GET_TRADES, GET_UNIFIED_MARKET_FEED, GET_UNIFIED_MARKET_FEED_BY_VOLUME, GET_USER, GET_VENUES, GET_VENUE_LEADERBOARD, LimitOrdersFacet_default as LimitOrdersFacetABI, MarketGroupFacet_default as MarketGroupFacetABI, MarketModule, MarketOrdersFacet_default as MarketOrdersFacetABI, MarketsFacet_default as MarketsFacetABI, MatchingFacet_default as MatchingFacetABI, MetadataFacet_default as MetadataFacetABI, NegRiskFacet_default as NegRiskFacetABI, OPERATOR_FEE_BPS, OddMakiClient, OrderBookFacet_default as OrderBookFacetABI, PROTOCOL_FEES, PriceMarketFacet_default as PriceMarketFacetABI, PriceMarketModule, ProtocolFacet_default as ProtocolFacetABI, PublicModule, PythResolutionFacet_default as PythResolutionFacetABI, ResolutionFacet_default as ResolutionFacetABI, SUBGRAPH_IDS, SubgraphClient, TICK_SIZE_FINE, TICK_SIZE_STANDARD, TagsFacet_default as TagsFacetABI, TokenModule, TradeModule, UMA_DEFAULTS, UmaModule, UmaOracle_default as UmaOracleABI, VALID_TICK_SIZES, VaultFacet_default as VaultFacetABI, VenueFacet_default as VenueFacetABI, VenueModule, WhitelistAccessControl_default as WhitelistAccessControlABI, applyTakerFeeBuffer, buildSubgraphGatewayUrl, calculateChancePercent, clearDecimalsCache, createExpiry, createOddMakiClient, estimateBuyFromAmount, estimateBuyFromShares, estimateSellFromShares, formatAmount, formatAncillaryData, formatTimestamp, getCachedTokenDecimals, getOutcomePrice, getTokenDecimals, getTotalFeeBps, isValidTickSize, maxSellTickToCross, minBuyTickToCross, parseAmount, parseAncillaryData, parseMetadata, parseTokenAmount, priceToTick, resolveIPFSUri, tickToPercentage, tickToPrice, version };
|
|
12296
12394
|
//# sourceMappingURL=index.mjs.map
|
|
12297
12395
|
//# sourceMappingURL=index.mjs.map
|