diff --git a/packages/sdk-ts/src/core/modules/wasm/exec-args.ts b/packages/sdk-ts/src/core/modules/wasm/exec-args.ts index fb5335c29..596083bae 100644 --- a/packages/sdk-ts/src/core/modules/wasm/exec-args.ts +++ b/packages/sdk-ts/src/core/modules/wasm/exec-args.ts @@ -11,6 +11,7 @@ import ExecArgInitiateTransfer from './exec-args/ExecArgInitiateTransfer' import ExecArgIncreaseAllowance from './exec-args/ExecArgIncreaseAllowance' import ExecArgRemoveGridStrategy from './exec-args/ExecArgRemoveGridStrategy' import ExecArgCreateSpotGridStrategy from './exec-args/ExecArgCreateSpotGridStrategy' +import ExecArgCreatePerpGridStrategy from './exec-args/ExecArgCreatePerpGridStrategy' import ExecArgCW20AdapterRedeemAndTransfer from './exec-args/ExecArgCW20AdapterRedeemAndTransfer' @@ -33,6 +34,7 @@ export type ExecArgs = | ExecArgIncreaseAllowance | ExecArgRemoveGridStrategy | ExecArgCreateSpotGridStrategy + | ExecArgCreatePerpGridStrategy | ExecArgCW20AdapterRedeemAndTransfer export type ExecPrivilegedArgs = diff --git a/packages/sdk-ts/src/core/modules/wasm/exec-args/ExecArgCreatePerpGridStrategy.ts b/packages/sdk-ts/src/core/modules/wasm/exec-args/ExecArgCreatePerpGridStrategy.ts new file mode 100644 index 000000000..b7c848ea8 --- /dev/null +++ b/packages/sdk-ts/src/core/modules/wasm/exec-args/ExecArgCreatePerpGridStrategy.ts @@ -0,0 +1,79 @@ +import { + dataToExecData, + ExecArgBase, + ExecDataRepresentation, +} from '../ExecArgBase' + +import { ExitConfig, ExitType } from '../types' +export declare namespace ExecArgCreatePerpGridStrategy { + export interface Params { + subaccountId: string + lowerBound: string + upperBound: string + levels: number + slippage?: string + stopLoss?: string + takeProfit?: string + marginRatio: string + } + + export interface Data { + subaccount_id: string + bounds: [string, string] + slippage?: string + stop_loss?: ExitConfig + take_profit?: ExitConfig + levels: number + strategy_type: { + perpetual: { + margin_ratio: string + } + } + } +} + +/** + * @category Contract Exec Arguments + */ +export default class ExecArgCreatePerpGridStrategy extends ExecArgBase< + ExecArgCreatePerpGridStrategy.Params, + ExecArgCreatePerpGridStrategy.Data +> { + static fromJSON( + params: ExecArgCreatePerpGridStrategy.Params, + ): ExecArgCreatePerpGridStrategy { + return new ExecArgCreatePerpGridStrategy(params) + } + + toData(): ExecArgCreatePerpGridStrategy.Data { + const { params } = this + + return { + subaccount_id: params.subaccountId, + bounds: [params.lowerBound, params.upperBound], + levels: params.levels, + slippage: params.slippage, + strategy_type: { + perpetual: { + margin_ratio: params.marginRatio, + }, + }, + stop_loss: params.stopLoss + ? { + exitType: ExitType.Default, + exitPrice: params.stopLoss, + } + : undefined, + take_profit: params.takeProfit + ? { + exitType: ExitType.Default, + exitPrice: params.takeProfit, + } + : undefined, + } + } + + toExecData(): ExecDataRepresentation { + return dataToExecData('create_strategy', this.toData()) + } +} diff --git a/packages/sdk-ts/src/core/modules/wasm/index.ts b/packages/sdk-ts/src/core/modules/wasm/index.ts index 2f41dd7ce..8e92fb2f0 100644 --- a/packages/sdk-ts/src/core/modules/wasm/index.ts +++ b/packages/sdk-ts/src/core/modules/wasm/index.ts @@ -11,6 +11,7 @@ import ExecArgInitiateTransfer from './exec-args/ExecArgInitiateTransfer' import ExecArgIncreaseAllowance from './exec-args/ExecArgIncreaseAllowance' import ExecArgRemoveGridStrategy from './exec-args/ExecArgRemoveGridStrategy' import ExecArgCreateSpotGridStrategy from './exec-args/ExecArgCreateSpotGridStrategy' +import ExecArgCreatePerpGridStrategy from './exec-args/ExecArgCreatePerpGridStrategy' import ExecArgCW20AdapterRedeemAndTransfer from './exec-args/ExecArgCW20AdapterRedeemAndTransfer' import MsgStoreCode from './msgs/MsgStoreCode' @@ -43,6 +44,7 @@ export { ExecArgIncreaseAllowance, ExecArgRemoveGridStrategy, ExecArgCreateSpotGridStrategy, + ExecArgCreatePerpGridStrategy, ExecArgCW20AdapterRedeemAndTransfer, // MsgStoreCode,