src/margin/reject.ts
v0.1.0 · 627 B
const MARGIN_REJECT_RE = /InsufficientFunds|Unhealthy trader cannot increase exposure/i;
export function isMarginReject(reason?: string | null, message?: string | null): boolean {
return MARGIN_REJECT_RE.test(`${reason ?? ''} ${message ?? ''}`);
}
export function freeMarginUsd(view: { initialMarginUsd: number | null; collateralUsd: number | null }): number | null {
if (
view.initialMarginUsd === null ||
view.collateralUsd === null ||
!Number.isFinite(view.initialMarginUsd) ||
!Number.isFinite(view.collateralUsd)
)
return null;
return Math.max(0, view.collateralUsd - view.initialMarginUsd);
}