diff --git a/src/bingx-client/services/trade.service.ts b/src/bingx-client/services/trade.service.ts index ff8bdac..b915f20 100644 --- a/src/bingx-client/services/trade.service.ts +++ b/src/bingx-client/services/trade.service.ts @@ -8,6 +8,8 @@ import { BingxSwitchMarginModeEndpoint, MarginType, } from '@app/bingx/endpoints/bingx-switch-margin-mode-endpoint'; +import { BingxSwitchLeverageEndpoint } from '@app/bingx/endpoints/bingx-switch-leverage-endpoint'; +import { OrderPositionSideEnum } from '@app/bingx'; export class TradeService { constructor(private readonly requestExecutor: RequestExecutorInterface) {} @@ -42,4 +44,15 @@ export class TradeService { new BingxSwitchMarginModeEndpoint(symbol, marginType, account), ); } + + public switchLeverage( + symbol: string, + leverage: number, + side: OrderPositionSideEnum, + account: AccountInterface, + ) { + return this.requestExecutor.execute( + new BingxSwitchLeverageEndpoint(symbol, leverage, side, account), + ); + } } diff --git a/src/bingx/endpoints/bingx-switch-leverage-endpoint.ts b/src/bingx/endpoints/bingx-switch-leverage-endpoint.ts new file mode 100644 index 0000000..f39e8a5 --- /dev/null +++ b/src/bingx/endpoints/bingx-switch-leverage-endpoint.ts @@ -0,0 +1,48 @@ +import { + AccountInterface, + DefaultSignatureParameters, + Endpoint, + EndpointInterface, + OrderPositionSideEnum, + SignatureParametersInterface, +} from '@app/bingx'; + +export interface SwitchLeverageResponse {} + +export interface SwitchLeverageInterface { + symbol: string; + leverage: number; + side: OrderPositionSideEnum; +} + +export class BingxSwitchLeverageEndpoint + extends Endpoint + implements EndpointInterface +{ + constructor( + private readonly symbol: string, + private readonly leverage: number, + private readonly side: OrderPositionSideEnum, + readonly account: AccountInterface, + ) { + super(account); + } + + method(): 'get' | 'post' | 'put' | 'patch' | 'delete' { + return 'post'; + } + + parameters(): SignatureParametersInterface { + return new DefaultSignatureParameters({ + symbol: this.symbol, + leverage: this.leverage.toString(10), + side: this.side, + }); + } + + path(): string { + return '/openApi/swap/v2/trade/leverage'; + } + + readonly t!: SwitchLeverageResponse; +}