@newyorkcompute/kalshi-tui 0.1.0 → 0.3.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/README.md +35 -0
- package/dist/App.d.ts +2 -1
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +43 -36
- package/dist/App.js.map +1 -1
- package/dist/cache.d.ts +34 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +60 -0
- package/dist/cache.js.map +1 -0
- package/dist/cache.test.d.ts +2 -0
- package/dist/cache.test.d.ts.map +1 -0
- package/dist/cache.test.js +73 -0
- package/dist/cache.test.js.map +1 -0
- package/dist/cli.d.ts +2 -2
- package/dist/cli.js +31 -35
- package/dist/cli.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts +20 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.js +28 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/Footer.d.ts +6 -0
- package/dist/components/Footer.d.ts.map +1 -0
- package/dist/components/Footer.js +10 -0
- package/dist/components/Footer.js.map +1 -0
- package/dist/components/Header.d.ts +10 -2
- package/dist/components/Header.d.ts.map +1 -1
- package/dist/components/Header.js +18 -9
- package/dist/components/Header.js.map +1 -1
- package/dist/components/Markets.d.ts +21 -0
- package/dist/components/Markets.d.ts.map +1 -0
- package/dist/components/Markets.js +25 -0
- package/dist/components/Markets.js.map +1 -0
- package/dist/components/Orderbook.d.ts +18 -5
- package/dist/components/Orderbook.d.ts.map +1 -1
- package/dist/components/Orderbook.js +25 -36
- package/dist/components/Orderbook.js.map +1 -1
- package/dist/components/Positions.d.ts +13 -2
- package/dist/components/Positions.d.ts.map +1 -1
- package/dist/components/Positions.js +10 -17
- package/dist/components/Positions.js.map +1 -1
- package/dist/components/PriceChart.d.ts +18 -0
- package/dist/components/PriceChart.d.ts.map +1 -0
- package/dist/components/PriceChart.js +103 -0
- package/dist/components/PriceChart.js.map +1 -0
- package/dist/components/index.d.ts +10 -10
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +10 -11
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/index.d.ts +4 -4
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -4
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useKalshi.d.ts +30 -12
- package/dist/hooks/useKalshi.d.ts.map +1 -1
- package/dist/hooks/useKalshi.js +249 -19
- package/dist/hooks/useKalshi.js.map +1 -1
- package/dist/utils.d.ts +33 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +88 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.test.d.ts +2 -0
- package/dist/utils.test.d.ts.map +1 -0
- package/dist/utils.test.js +115 -0
- package/dist/utils.test.js.map +1 -0
- package/package.json +8 -8
- package/dist/components/HelpModal.d.ts +0 -5
- package/dist/components/HelpModal.d.ts.map +0 -1
- package/dist/components/HelpModal.js +0 -19
- package/dist/components/HelpModal.js.map +0 -1
- package/dist/components/MarketList.d.ts +0 -5
- package/dist/components/MarketList.d.ts.map +0 -1
- package/dist/components/MarketList.js +0 -68
- package/dist/components/MarketList.js.map +0 -1
- package/dist/components/OrderEntry.d.ts +0 -9
- package/dist/components/OrderEntry.d.ts.map +0 -1
- package/dist/components/OrderEntry.js +0 -77
- package/dist/components/OrderEntry.js.map +0 -1
- package/dist/components/SearchBar.d.ts +0 -5
- package/dist/components/SearchBar.d.ts.map +0 -1
- package/dist/components/SearchBar.js +0 -27
- package/dist/components/SearchBar.js.map +0 -1
- package/dist/components/StatusBar.d.ts +0 -5
- package/dist/components/StatusBar.d.ts.map +0 -1
- package/dist/components/StatusBar.js +0 -9
- package/dist/components/StatusBar.js.map +0 -1
- package/dist/components/ui/Box.d.ts +0 -14
- package/dist/components/ui/Box.d.ts.map +0 -1
- package/dist/components/ui/Box.js +0 -9
- package/dist/components/ui/Box.js.map +0 -1
- package/dist/components/ui/Sparkline.d.ts +0 -11
- package/dist/components/ui/Sparkline.d.ts.map +0 -1
- package/dist/components/ui/Sparkline.js +0 -32
- package/dist/components/ui/Sparkline.js.map +0 -1
- package/dist/hooks/useMarkets.d.ts +0 -13
- package/dist/hooks/useMarkets.d.ts.map +0 -1
- package/dist/hooks/useMarkets.js +0 -89
- package/dist/hooks/useMarkets.js.map +0 -1
- package/dist/hooks/useOrderbook.d.ts +0 -13
- package/dist/hooks/useOrderbook.d.ts.map +0 -1
- package/dist/hooks/useOrderbook.js +0 -81
- package/dist/hooks/useOrderbook.js.map +0 -1
- package/dist/hooks/usePortfolio.d.ts +0 -18
- package/dist/hooks/usePortfolio.d.ts.map +0 -1
- package/dist/hooks/usePortfolio.js +0 -84
- package/dist/hooks/usePortfolio.js.map +0 -1
- package/dist/stores/app-store.d.ts +0 -17
- package/dist/stores/app-store.d.ts.map +0 -1
- package/dist/stores/app-store.js +0 -21
- package/dist/stores/app-store.js.map +0 -1
- package/dist/theme.d.ts +0 -31
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js +0 -37
- package/dist/theme.js.map +0 -1
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { formatCurrency } from "@newyorkcompute/kalshi-core";
|
|
4
|
-
import { usePortfolio } from "../hooks/usePortfolio.js";
|
|
5
|
-
import { useAppStore } from "../stores/app-store.js";
|
|
6
2
|
/**
|
|
7
|
-
* Header
|
|
3
|
+
* Header Component
|
|
4
|
+
* Displays branding, balance, and connection status
|
|
8
5
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
6
|
+
import { Box, Text } from 'ink';
|
|
7
|
+
export function Header({ balance, isConnected, isRateLimited, error }) {
|
|
8
|
+
const formatCurrency = (cents) => `$${(cents / 100).toFixed(2)}`;
|
|
9
|
+
const balanceText = balance !== null ? formatCurrency(balance) : '—';
|
|
10
|
+
// Determine connection status display
|
|
11
|
+
const getStatusDisplay = () => {
|
|
12
|
+
if (isRateLimited) {
|
|
13
|
+
return { color: 'yellow', icon: '◐', text: 'rate limited' };
|
|
14
|
+
}
|
|
15
|
+
if (isConnected) {
|
|
16
|
+
return { color: 'green', icon: '●', text: 'connected' };
|
|
17
|
+
}
|
|
18
|
+
return { color: 'red', icon: '○', text: 'disconnected' };
|
|
19
|
+
};
|
|
20
|
+
const status = getStatusDisplay();
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", borderStyle: "single", borderColor: "gray", paddingX: 1, height: 3, width: "100%", children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsx(Text, { color: "green", bold: true, children: "\u2588 KALSHI" }), _jsx(Text, { color: "gray", children: "NEW YORK COMPUTE" })] }), _jsxs(Box, { flexDirection: "column", alignItems: "flex-end", children: [_jsxs(Text, { children: ["Balance: ", _jsx(Text, { bold: true, children: balanceText })] }), _jsxs(Box, { children: [_jsx(Text, { color: status.color, children: status.icon }), _jsxs(Text, { color: "gray", children: [" ", status.text] })] }), error && (_jsx(Text, { color: "yellow", dimColor: true, wrap: "truncate", children: error.slice(0, 40) }))] })] }));
|
|
13
22
|
}
|
|
14
23
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAe;IAChF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAErE,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,QAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,OAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IACpE,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,KAAK,EACnB,cAAc,EAAC,eAAe,EAC9B,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,CAAC,EACT,KAAK,EAAC,MAAM,aAGZ,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,oCAAgB,EACxC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,iCAAwB,IACtC,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,aAC/C,MAAC,IAAI,4BACM,KAAC,IAAI,IAAC,IAAI,kBAAE,WAAW,GAAQ,IACnC,EACP,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YACtB,MAAM,CAAC,IAAI,GACP,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,MAAM,CAAC,IAAI,IAAQ,IACpC,EACL,KAAK,IAAI,CACR,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,YAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAQ,CAC1E,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markets Component
|
|
3
|
+
* Displays a scrollable list of markets with selection
|
|
4
|
+
*/
|
|
5
|
+
interface Market {
|
|
6
|
+
ticker: string;
|
|
7
|
+
title: string;
|
|
8
|
+
yes_bid?: number;
|
|
9
|
+
yes_ask?: number;
|
|
10
|
+
volume?: number;
|
|
11
|
+
close_time?: string;
|
|
12
|
+
previousYesBid?: number;
|
|
13
|
+
}
|
|
14
|
+
interface MarketsProps {
|
|
15
|
+
markets: Market[];
|
|
16
|
+
selectedIndex: number;
|
|
17
|
+
height: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function Markets({ markets, selectedIndex, height }: MarketsProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=Markets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Markets.d.ts","sourceRoot":"","sources":["../../src/components/Markets.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,YAAY,2CAsFvE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Markets Component
|
|
4
|
+
* Displays a scrollable list of markets with selection
|
|
5
|
+
*/
|
|
6
|
+
import { Box, Text } from 'ink';
|
|
7
|
+
import { formatExpiry, getPriceChange, formatPrice, formatVolume } from '../utils.js';
|
|
8
|
+
export function Markets({ markets, selectedIndex, height }) {
|
|
9
|
+
// Calculate visible window (scroll with selection)
|
|
10
|
+
const visibleRows = height - 4; // Border + title + padding
|
|
11
|
+
const halfWindow = Math.floor(visibleRows / 2);
|
|
12
|
+
let startIndex = Math.max(0, selectedIndex - halfWindow);
|
|
13
|
+
const maxStart = Math.max(0, markets.length - visibleRows);
|
|
14
|
+
startIndex = Math.min(startIndex, maxStart);
|
|
15
|
+
const visibleMarkets = markets.slice(startIndex, startIndex + visibleRows);
|
|
16
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "green", height: height, width: "100%", children: [_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsx(Text, { color: "green", bold: true, children: " MARKETS " }), _jsx(Text, { color: "gray", dimColor: true, children: "sorted by volume" })] }), _jsx(Box, { flexDirection: "column", paddingX: 1, flexGrow: 1, children: markets.length === 0 ? (_jsx(Text, { color: "gray", children: "Loading markets..." })) : (visibleMarkets.map((market, i) => {
|
|
17
|
+
const actualIndex = startIndex + i;
|
|
18
|
+
const isSelected = actualIndex === selectedIndex;
|
|
19
|
+
const priceChange = getPriceChange(market.yes_bid, market.previousYesBid);
|
|
20
|
+
const expiry = formatExpiry(market.close_time);
|
|
21
|
+
const volume = formatVolume(market.volume);
|
|
22
|
+
return (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'green' : 'gray', children: isSelected ? '▶ ' : ' ' }), _jsx(Text, { color: isSelected ? 'green' : 'white', bold: isSelected, children: market.ticker.slice(0, 20) })] }), _jsxs(Box, { children: [volume && (_jsx(Text, { color: "cyan", dimColor: true, children: volume.padStart(6) })), expiry && (_jsx(Text, { color: "gray", dimColor: true, children: expiry.padStart(8) })), _jsx(Text, { color: isSelected ? 'green' : 'white', children: formatPrice(market.yes_bid).padStart(5) }), _jsxs(Text, { color: priceChange.color, children: [" ", priceChange.text] })] })] }, market.ticker));
|
|
23
|
+
})) }), markets.length > 0 && (_jsx(Box, { justifyContent: "center", paddingX: 1, children: _jsxs(Text, { color: "gray", children: [selectedIndex + 1, " of ", markets.length] }) }))] }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=Markets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Markets.js","sourceRoot":"","sources":["../../src/components/Markets.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
interface OrderbookProps {
|
|
2
|
-
ticker: string | null;
|
|
3
|
-
}
|
|
4
1
|
/**
|
|
5
|
-
* Orderbook
|
|
2
|
+
* Orderbook Component
|
|
3
|
+
* Visual depth chart showing bids and asks with spread indicator
|
|
6
4
|
*/
|
|
7
|
-
|
|
5
|
+
interface OrderbookData {
|
|
6
|
+
yes: [number, number][];
|
|
7
|
+
no: [number, number][];
|
|
8
|
+
}
|
|
9
|
+
interface SelectedMarket {
|
|
10
|
+
ticker: string;
|
|
11
|
+
title: string;
|
|
12
|
+
close_time?: string;
|
|
13
|
+
volume?: number;
|
|
14
|
+
}
|
|
15
|
+
interface OrderbookProps {
|
|
16
|
+
market: SelectedMarket | null;
|
|
17
|
+
orderbook: OrderbookData | null;
|
|
18
|
+
height: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function Orderbook({ market, orderbook, height }: OrderbookProps): import("react/jsx-runtime").JSX.Element;
|
|
8
21
|
export {};
|
|
9
22
|
//# sourceMappingURL=Orderbook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orderbook.d.ts","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Orderbook.d.ts","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACxB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,2CAiHtE"}
|
|
@@ -1,43 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { formatPrice } from "@newyorkcompute/kalshi-core";
|
|
4
|
-
import { useOrderbook } from "../hooks/useOrderbook.js";
|
|
5
|
-
import { useAppStore } from "../stores/app-store.js";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
6
2
|
/**
|
|
7
|
-
* Orderbook
|
|
3
|
+
* Orderbook Component
|
|
4
|
+
* Visual depth chart showing bids and asks with spread indicator
|
|
8
5
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const yesQtys = orderbook?.yes?.map((level) => level[1]) || [];
|
|
15
|
-
const noQtys = orderbook?.no?.map((level) => level[1]) || [];
|
|
16
|
-
const allQuantities = [...yesQtys, ...noQtys];
|
|
17
|
-
const maxQty = Math.max(...allQuantities, 1);
|
|
18
|
-
// Render a depth bar
|
|
19
|
-
const renderBar = (quantity, side, maxWidth = 20) => {
|
|
20
|
-
const barWidth = Math.round((quantity / maxQty) * maxWidth);
|
|
21
|
-
const bar = "█".repeat(barWidth);
|
|
22
|
-
const padding = " ".repeat(maxWidth - barWidth);
|
|
23
|
-
if (side === "ask") {
|
|
24
|
-
return (_jsxs(Text, { color: "red", children: [padding, bar] }));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return _jsx(Text, { color: "green", children: bar });
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
// Get asks (sorted high to low) and bids (sorted high to low)
|
|
31
|
-
const asks = (orderbook?.no || [])
|
|
6
|
+
import { Box, Text } from 'ink';
|
|
7
|
+
import { formatExpiry, formatVolume, formatPriceDecimal, calculateSpread } from '../utils.js';
|
|
8
|
+
export function Orderbook({ market, orderbook, height }) {
|
|
9
|
+
// Parse orderbook into asks (no side, converted to YES equivalent) and bids (yes side)
|
|
10
|
+
const asks = (orderbook?.no ?? [])
|
|
32
11
|
.slice(0, 5)
|
|
33
|
-
.
|
|
34
|
-
|
|
12
|
+
.map(([price, qty]) => ({ price: 100 - price, quantity: qty }))
|
|
13
|
+
.sort((a, b) => b.price - a.price);
|
|
14
|
+
const bids = (orderbook?.yes ?? [])
|
|
35
15
|
.slice(0, 5)
|
|
36
|
-
.
|
|
16
|
+
.map(([price, qty]) => ({ price, quantity: qty }))
|
|
17
|
+
.sort((a, b) => b.price - a.price);
|
|
37
18
|
// Calculate spread
|
|
38
|
-
const bestAsk = asks.length > 0 ? asks
|
|
39
|
-
const bestBid = bids.length > 0 ? bids
|
|
40
|
-
const spread =
|
|
41
|
-
|
|
19
|
+
const bestAsk = asks.length > 0 ? Math.min(...asks.map(a => a.price)) : null;
|
|
20
|
+
const bestBid = bids.length > 0 ? Math.max(...bids.map(b => b.price)) : null;
|
|
21
|
+
const spread = calculateSpread(bestBid, bestAsk);
|
|
22
|
+
// Calculate max quantity for bar scaling
|
|
23
|
+
const maxQty = Math.max(...asks.map(l => l.quantity), ...bids.map(l => l.quantity), 1);
|
|
24
|
+
const renderBar = (qty, color, maxWidth = 20) => {
|
|
25
|
+
const barLength = Math.min(Math.floor((qty / maxQty) * maxWidth), maxWidth);
|
|
26
|
+
return _jsx(Text, { color: color, children: '█'.repeat(barLength) });
|
|
27
|
+
};
|
|
28
|
+
const expiry = formatExpiry(market?.close_time);
|
|
29
|
+
const volume = formatVolume(market?.volume);
|
|
30
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", height: height, width: "100%", children: [_jsxs(Box, { paddingX: 1, flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, children: " ORDERBOOK" }), _jsxs(Text, { color: "gray", children: [": ", market?.ticker || 'Select a market'] })] }), market?.title && (_jsxs(Text, { color: "cyan", wrap: "truncate", children: [market.title.slice(0, 50), market.title.length > 50 ? '…' : ''] })), market && (_jsxs(Box, { children: [expiry && (_jsxs(Text, { color: "yellow", children: ["\u23F1 ", expiry] })), volume && (_jsxs(Text, { color: "gray", children: [" Vol: ", volume] }))] }))] }), _jsx(Box, { flexDirection: "column", paddingX: 1, flexGrow: 1, children: !orderbook ? (_jsx(Text, { color: "gray", children: "Select a market to view orderbook" })) : (_jsxs(_Fragment, { children: [asks.map((level, i) => (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "ASK " }), renderBar(level.quantity, 'red')] }), _jsxs(Box, { children: [_jsx(Text, { color: "red", children: formatPriceDecimal(level.price) }), _jsxs(Text, { color: "gray", children: [" (", level.quantity, ")"] })] })] }, `ask-${i}`))), _jsxs(Box, { marginY: 1, justifyContent: "space-between", children: [_jsx(Text, { color: "gray", children: '─'.repeat(30) }), spread !== null && (_jsxs(Text, { color: "yellow", bold: true, children: ["SPREAD: ", spread.toFixed(2), "\u00A2"] }))] }), bids.map((level, i) => (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "BID " }), renderBar(level.quantity, 'green')] }), _jsxs(Box, { children: [_jsx(Text, { color: "green", children: formatPriceDecimal(level.price) }), _jsxs(Text, { color: "gray", children: [" (", level.quantity, ")"] })] })] }, `bid-${i}`)))] })) })] }));
|
|
42
31
|
}
|
|
43
32
|
//# sourceMappingURL=Orderbook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orderbook.js","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Orderbook.js","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Positions
|
|
2
|
+
* Positions Component
|
|
3
|
+
* Displays open positions with P&L
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
+
interface Position {
|
|
6
|
+
ticker: string;
|
|
7
|
+
position: number;
|
|
8
|
+
market_exposure: number;
|
|
9
|
+
}
|
|
10
|
+
interface PositionsProps {
|
|
11
|
+
positions: Position[];
|
|
12
|
+
height: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function Positions({ positions, height }: PositionsProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
5
16
|
//# sourceMappingURL=Positions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Positions.d.ts","sourceRoot":"","sources":["../../src/components/Positions.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Positions.d.ts","sourceRoot":"","sources":["../../src/components/Positions.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,2CAyC9D"}
|
|
@@ -1,22 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { formatCurrency, truncate } from "@newyorkcompute/kalshi-core";
|
|
4
|
-
import { usePortfolio } from "../hooks/usePortfolio.js";
|
|
5
|
-
import { useAppStore } from "../stores/app-store.js";
|
|
6
2
|
/**
|
|
7
|
-
* Positions
|
|
3
|
+
* Positions Component
|
|
4
|
+
* Displays open positions with P&L
|
|
8
5
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const quantity = Math.abs(position.position);
|
|
18
|
-
const exposure = position.market_exposure;
|
|
19
|
-
return (_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { color: "white", children: truncate(position.ticker, 18) }), _jsxs(Box, { children: [_jsxs(Text, { color: side === "YES" ? "green" : "red", children: [side === "YES" ? "+" : "-", quantity] }), _jsxs(Text, { color: "gray", children: [" ", side] })] }), _jsx(Text, { color: "white", children: formatCurrency(exposure) })] }, position.ticker));
|
|
20
|
-
}), positions.length > 0 && (_jsxs(Box, { marginTop: 1, justifyContent: "space-between", children: [_jsx(Text, { color: "gray", children: "Total Exposure:" }), _jsx(Text, { color: "white", bold: true, children: formatCurrency(totalExposure) })] }))] })] }));
|
|
6
|
+
import { Box, Text } from 'ink';
|
|
7
|
+
export function Positions({ positions, height }) {
|
|
8
|
+
const formatCurrency = (cents) => `$${(cents / 100).toFixed(2)}`;
|
|
9
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", height: height, width: "100%", children: [_jsx(Box, { paddingX: 1, children: _jsx(Text, { bold: true, children: " POSITIONS " }) }), _jsx(Box, { flexDirection: "column", paddingX: 1, flexGrow: 1, children: positions.length === 0 ? (_jsx(Text, { color: "gray", children: "No open positions" })) : (positions.slice(0, height - 3).map((pos) => {
|
|
10
|
+
const side = pos.position > 0 ? 'YES' : 'NO';
|
|
11
|
+
const sideColor = pos.position > 0 ? 'green' : 'red';
|
|
12
|
+
return (_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { children: pos.ticker.slice(0, 18) }), _jsxs(Box, { children: [_jsxs(Text, { color: sideColor, children: [Math.abs(pos.position), " ", side] }), _jsxs(Text, { children: [" ", formatCurrency(pos.market_exposure)] })] })] }, pos.ticker));
|
|
13
|
+
})) })] }));
|
|
21
14
|
}
|
|
22
15
|
//# sourceMappingURL=Positions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Positions.js","sourceRoot":"","sources":["../../src/components/Positions.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Positions.js","sourceRoot":"","sources":["../../src/components/Positions.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAahC,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAkB;IAC7D,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAC,MAAM,aAGZ,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,IAAI,kCAAmB,GACzB,EAGN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YACjD,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kCAAyB,CAC5C,CAAC,CAAC,CAAC,CACF,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;oBAErD,OAAO,CACL,MAAC,GAAG,IAAkB,cAAc,EAAC,eAAe,aAClD,KAAC,IAAI,cAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAQ,EACtC,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,aACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAG,IAAI,IACzB,EACP,MAAC,IAAI,oBAAG,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,IAAQ,IAC/C,KAPE,GAAG,CAAC,MAAM,CAQd,CACP,CAAC;gBACJ,CAAC,CAAC,CACH,GACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Price Chart Component
|
|
3
|
+
* ASCII chart showing historical YES prices
|
|
4
|
+
*/
|
|
5
|
+
interface TradePoint {
|
|
6
|
+
timestamp: number;
|
|
7
|
+
price: number;
|
|
8
|
+
volume: number;
|
|
9
|
+
}
|
|
10
|
+
interface PriceChartProps {
|
|
11
|
+
ticker: string | null;
|
|
12
|
+
priceHistory: TradePoint[];
|
|
13
|
+
height: number;
|
|
14
|
+
width: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function PriceChart({ ticker, priceHistory, height, width }: PriceChartProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=PriceChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceChart.d.ts","sourceRoot":"","sources":["../../src/components/PriceChart.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAqED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,2CAmGlF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Price Chart Component
|
|
4
|
+
* ASCII chart showing historical YES prices
|
|
5
|
+
*/
|
|
6
|
+
import { Box, Text } from 'ink';
|
|
7
|
+
import asciichart from 'asciichart';
|
|
8
|
+
/**
|
|
9
|
+
* Spread trade points evenly across the chart width
|
|
10
|
+
* This fills the entire width regardless of time gaps
|
|
11
|
+
*/
|
|
12
|
+
function spreadPrices(trades, targetPoints) {
|
|
13
|
+
if (trades.length === 0)
|
|
14
|
+
return [];
|
|
15
|
+
if (trades.length === 1) {
|
|
16
|
+
// Single point - fill the width with the same value
|
|
17
|
+
return Array(targetPoints).fill(trades[0].price);
|
|
18
|
+
}
|
|
19
|
+
// If we have fewer trades than target points, interpolate
|
|
20
|
+
if (trades.length <= targetPoints) {
|
|
21
|
+
const result = [];
|
|
22
|
+
const step = (trades.length - 1) / (targetPoints - 1);
|
|
23
|
+
for (let i = 0; i < targetPoints; i++) {
|
|
24
|
+
const tradeIndex = i * step;
|
|
25
|
+
const lowerIndex = Math.floor(tradeIndex);
|
|
26
|
+
const upperIndex = Math.min(Math.ceil(tradeIndex), trades.length - 1);
|
|
27
|
+
if (lowerIndex === upperIndex) {
|
|
28
|
+
result.push(trades[lowerIndex].price);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Linear interpolation between points
|
|
32
|
+
const fraction = tradeIndex - lowerIndex;
|
|
33
|
+
const interpolated = trades[lowerIndex].price +
|
|
34
|
+
(trades[upperIndex].price - trades[lowerIndex].price) * fraction;
|
|
35
|
+
result.push(interpolated);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
// If we have more trades than target points, sample/aggregate
|
|
41
|
+
const result = [];
|
|
42
|
+
const step = trades.length / targetPoints;
|
|
43
|
+
for (let i = 0; i < targetPoints; i++) {
|
|
44
|
+
const startIdx = Math.floor(i * step);
|
|
45
|
+
const endIdx = Math.floor((i + 1) * step);
|
|
46
|
+
// Average the prices in this bucket
|
|
47
|
+
let sum = 0;
|
|
48
|
+
let count = 0;
|
|
49
|
+
for (let j = startIdx; j < endIdx && j < trades.length; j++) {
|
|
50
|
+
sum += trades[j].price;
|
|
51
|
+
count++;
|
|
52
|
+
}
|
|
53
|
+
result.push(count > 0 ? sum / count : trades[startIdx].price);
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Format timestamp to readable time
|
|
59
|
+
*/
|
|
60
|
+
function formatTime(timestamp) {
|
|
61
|
+
const date = new Date(timestamp);
|
|
62
|
+
return date.toLocaleTimeString('en-US', {
|
|
63
|
+
hour: '2-digit',
|
|
64
|
+
minute: '2-digit',
|
|
65
|
+
hour12: false
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function PriceChart({ ticker, priceHistory, height, width }) {
|
|
69
|
+
// Calculate chart dimensions
|
|
70
|
+
const chartHeight = Math.max(height - 8, 5); // Leave room for labels
|
|
71
|
+
const chartWidth = Math.max(width - 15, 20); // Leave room for Y-axis labels
|
|
72
|
+
// Spread prices across the full chart width
|
|
73
|
+
const prices = spreadPrices(priceHistory, chartWidth);
|
|
74
|
+
// Calculate stats
|
|
75
|
+
const currentPrice = prices.length > 0 ? prices[prices.length - 1] : null;
|
|
76
|
+
const startPrice = prices.length > 0 ? prices[0] : null;
|
|
77
|
+
const priceChange = currentPrice && startPrice
|
|
78
|
+
? ((currentPrice - startPrice) / startPrice * 100).toFixed(2)
|
|
79
|
+
: null;
|
|
80
|
+
const minPrice = prices.length > 0 ? Math.min(...prices) : null;
|
|
81
|
+
const maxPrice = prices.length > 0 ? Math.max(...prices) : null;
|
|
82
|
+
// Generate chart
|
|
83
|
+
let chartOutput = '';
|
|
84
|
+
if (prices.length >= 2) {
|
|
85
|
+
try {
|
|
86
|
+
chartOutput = asciichart.plot(prices, {
|
|
87
|
+
height: chartHeight,
|
|
88
|
+
format: (x) => x.toFixed(0).padStart(3) + '¢',
|
|
89
|
+
colors: [asciichart.green],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
chartOutput = 'Unable to render chart';
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Time labels
|
|
97
|
+
const startTime = priceHistory.length > 0 ? formatTime(priceHistory[0].timestamp) : '';
|
|
98
|
+
const endTime = priceHistory.length > 0 ? formatTime(priceHistory[priceHistory.length - 1].timestamp) : '';
|
|
99
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", height: height, width: "100%", children: [_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "cyan", bold: true, children: " PRICE CHART" }), _jsxs(Text, { color: "gray", children: [": ", ticker || 'Select a market'] })] }), currentPrice !== null && priceChange !== null && (_jsxs(Box, { children: [_jsxs(Text, { color: "white", bold: true, children: [currentPrice.toFixed(0), "\u00A2"] }), _jsxs(Text, { color: parseFloat(priceChange) >= 0 ? 'green' : 'red', children: [' ', "(", parseFloat(priceChange) >= 0 ? '+' : '', priceChange, "%)"] })] }))] }), prices.length > 0 && (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "gray", children: ["Low: ", _jsxs(Text, { color: "red", children: [minPrice?.toFixed(0), "\u00A2"] }), ' ', " High: ", _jsxs(Text, { color: "green", children: [maxPrice?.toFixed(0), "\u00A2"] }), ' ', " Trades: ", _jsx(Text, { color: "yellow", children: priceHistory.length })] }) })), _jsx(Box, { flexDirection: "column", paddingX: 1, flexGrow: 1, children: prices.length < 2 ? (_jsxs(Box, { flexDirection: "column", justifyContent: "center", alignItems: "center", flexGrow: 1, children: [_jsx(Text, { color: "gray", children: priceHistory.length === 0
|
|
100
|
+
? 'No trade history available'
|
|
101
|
+
: 'Not enough data points for chart' }), _jsx(Text, { color: "gray", dimColor: true, children: "Select a market with recent trades" })] })) : (_jsx(Text, { children: chartOutput })) }), prices.length >= 2 && (_jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsx(Text, { color: "gray", children: startTime }), _jsx(Text, { color: "gray", children: "\u2500 24h \u2500" }), _jsx(Text, { color: "gray", children: endTime })] }))] }));
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=PriceChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceChart.js","sourceRoot":"","sources":["../../src/components/PriceChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
1
|
+
/**
|
|
2
|
+
* Component exports
|
|
3
|
+
*/
|
|
4
|
+
export { Header } from './Header.js';
|
|
5
|
+
export { Markets } from './Markets.js';
|
|
6
|
+
export { Orderbook } from './Orderbook.js';
|
|
7
|
+
export { Positions } from './Positions.js';
|
|
8
|
+
export { Footer } from './Footer.js';
|
|
9
|
+
export { PriceChart } from './PriceChart.js';
|
|
10
|
+
export { ErrorBoundary } from './ErrorBoundary.js';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
export { Sparkline } from "./ui/Sparkline.js";
|
|
1
|
+
/**
|
|
2
|
+
* Component exports
|
|
3
|
+
*/
|
|
4
|
+
export { Header } from './Header.js';
|
|
5
|
+
export { Markets } from './Markets.js';
|
|
6
|
+
export { Orderbook } from './Orderbook.js';
|
|
7
|
+
export { Positions } from './Positions.js';
|
|
8
|
+
export { Footer } from './Footer.js';
|
|
9
|
+
export { PriceChart } from './PriceChart.js';
|
|
10
|
+
export { ErrorBoundary } from './ErrorBoundary.js';
|
|
12
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export {
|
|
1
|
+
/**
|
|
2
|
+
* Hook exports
|
|
3
|
+
*/
|
|
4
|
+
export { useKalshi } from './useKalshi.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export {
|
|
1
|
+
/**
|
|
2
|
+
* Hook exports
|
|
3
|
+
*/
|
|
4
|
+
export { useKalshi } from './useKalshi.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|