import { AlunaAccountEnum } from '../../enums/AlunaAccountEnum'; import { AlunaOrderSideEnum } from '../../enums/AlunaOrderSideEnum'; import { AlunaOrderTypesEnum } from '../../enums/AlunaOrderTypesEnum'; import { IAlunaModuleParams, IAlunaModuleReturns } from '../../schemas/IAlunaModuleSchema'; import { IAlunaOrderSchema } from '../../schemas/IAlunaOrderSchema'; export interface IAlunaOrderReadModule { listRaw(params?: IAlunaOrderListParams): Promise; list(params?: IAlunaOrderListParams): Promise; getRaw(params: IAlunaOrderGetParams): Promise; get(params: IAlunaOrderGetParams): Promise; parseMany(params: IAlunaOrderParseManyParams): IAlunaOrderParseManyReturns; parse(params: IAlunaOrderParseParams): IAlunaOrderParseReturns; } export interface IAlunaOrderWriteModule extends IAlunaOrderReadModule { place(params: IAlunaOrderPlaceParams): Promise; edit(params: IAlunaOrderEditParams): Promise; cancel(params: IAlunaOrderCancelParams): Promise; } /** * Parse */ export interface IAlunaOrderParseParams { rawOrder: T; } export interface IAlunaOrderParseReturns { order: IAlunaOrderSchema; } export interface IAlunaOrderParseManyParams { rawOrders: T; } export interface IAlunaOrderParseManyReturns { orders: IAlunaOrderSchema[]; } /** * List */ export interface IAlunaOrderListParams extends IAlunaModuleParams { openOrdersOnly?: boolean; } export interface IAlunaOrderListRawReturns extends IAlunaModuleReturns { rawOrders: T; } export interface IAlunaOrderListReturns extends IAlunaOrderParseManyReturns, IAlunaModuleReturns { } /** * Get */ export interface IAlunaOrderGetParams extends IAlunaModuleParams { id: string; symbolPair: string; type: AlunaOrderTypesEnum; clientOrderId?: string; } export interface IAlunaOrderGetRawReturns extends IAlunaModuleReturns { rawOrder: T; } export interface IAlunaOrderGetReturns extends IAlunaOrderParseReturns, IAlunaModuleReturns { } /** * Place */ export interface IAlunaOrderPlaceParams extends IAlunaModuleParams { account: AlunaAccountEnum; type: AlunaOrderTypesEnum; side: AlunaOrderSideEnum; symbolPair: string; rate?: number; limitRate?: number; stopRate?: number; amount: number; reduceOnly?: boolean; clientOrderId?: string; } export interface IAlunaOrderPlaceReturns extends IAlunaOrderGetReturns { } /** * Edit */ export interface IAlunaOrderEditParams extends IAlunaOrderPlaceParams { id: string; newClientOrderId?: string; } export interface IAlunaOrderEditReturns extends IAlunaOrderGetReturns { } /** * Cancel */ export interface IAlunaOrderCancelParams extends IAlunaOrderGetParams { } export interface IAlunaOrderCancelReturns extends IAlunaOrderGetReturns { }