diff --git a/src/exchanges/lighter/gateway.ts b/src/exchanges/lighter/gateway.ts index 2b50284..3f5a1c3 100644 --- a/src/exchanges/lighter/gateway.ts +++ b/src/exchanges/lighter/gateway.ts @@ -746,13 +746,11 @@ export class LighterGateway { triggerPriceScaled = decimalToScaled(params.stopPrice, this.priceDecimals); } // Align with chain expectations: - // - IOC and MARKET/STOP_MARKET orders must use Nil/Immediate expiry + // - Pure MARKET orders use immediate expiry (0) + // - STOP orders rest until trigger, so they require an absolute future expiry // - All other orders use absolute future timestamp (ms) for ~28 days const TWENTY_EIGHT_DAYS_MS = 28 * 24 * 60 * 60 * 1000; - const isImmediate = - resultTimeInForce === LIGHTER_TIME_IN_FORCE.IMMEDIATE_OR_CANCEL || - resultType === LIGHTER_ORDER_TYPE.MARKET || - resultType === LIGHTER_ORDER_TYPE.STOP_LOSS; + const isImmediate = resultType === LIGHTER_ORDER_TYPE.MARKET; const orderExpiry = isImmediate ? BigInt(IMMEDIATE_OR_CANCEL_EXPIRY_PLACEHOLDER) : BigInt(Date.now() + TWENTY_EIGHT_DAYS_MS); diff --git a/src/ui/App.tsx b/src/ui/App.tsx index 11de91b..b82d24c 100644 --- a/src/ui/App.tsx +++ b/src/ui/App.tsx @@ -42,12 +42,7 @@ export function App() { const copyright = useMemo(() => loadCopyrightFragments(), []); const integrityOk = useMemo(() => verifyCopyrightIntegrity(), []); const exchangeId = useMemo(() => resolveExchangeId(), []); - const strategies = useMemo(() => { - if (exchangeId === "lighter") { - return STRATEGIES.filter((s) => s.id !== "trend"); - } - return STRATEGIES; - }, [exchangeId]); + const strategies = useMemo(() => STRATEGIES, []); useInput( (input, key) => {