import { z } from 'zod';
import { SymbolSchema, AmountSchema, PriceSchema, SideSchema, TypeSchema, LeverageSchema } from './base.schema.js';
export const PlaceOrderSchema = z.object({
symbol: SymbolSchema,
side: SideSchema,
type: TypeSchema,
amount: AmountSchema,
price: PriceSchema.optional(),
leverage: LeverageSchema.optional(),
stopLoss: PriceSchema.optional(),
takeProfit: PriceSchema.optional(),
reduceOnly: z.boolean().optional(),
clientOrderId: z.string().optional()
}).refine(
(data) => {
if (data.type === 'limit' && !data.price) {
return false;
}
return true;
},
{ message: 'Price is required for limit orders', path: ['price'] }
);
export const CancelOrderSchema = z.object({
symbol: SymbolSchema,
orderId: z.string()
});
export const GetOpenOrdersSchema = z.object({
symbol: SymbolSchema.optional()
});
export const GetOrderStatusSchema = z.object({
orderId: z.string(),
symbol: SymbolSchema.optional()
});
export const CancelAllOrdersSchema = z.object({
symbol: SymbolSchema.optional()
});