import { z } from 'zod';
import Decimal from 'decimal.js';
export const SymbolSchema = z.string().regex(
/^[A-Z0-9]+\/[A-Z0-9]+(:[A-Z0-9]+)?$/,
'Symbol must be BASE/QUOTE (spot) or BASE/QUOTE:SETTLE (perpetual)'
);
export const AmountSchema = z.string().refine(
(v) => {
try {
const d = new Decimal(v);
return d.isPositive() && d.isFinite();
} catch {
return false;
}
},
'Amount must be a positive number as string (e.g., "0.001" or "10.5")'
);
export const PriceSchema = z.string().refine(
(v) => {
try {
const d = new Decimal(v);
return d.isPositive() && d.isFinite();
} catch {
return false;
}
},
'Price must be a positive number as string (e.g., "89600.25")'
);
export const SideSchema = z.enum(['buy', 'sell']);
export const TypeSchema = z.enum(['market', 'limit']);
export const LeverageSchema = z.number().int().min(1).max(125);
export const CurrencySchema = z.string().min(1).max(10).toUpperCase();
export const TimeframeSchema = z.enum(['1m', '5m', '15m', '30m', '1h', '4h', '1d', '1w']);
export const LimitSchema = z.number().int().min(1).max(1000).default(100);