Add skipSimulation parameter to swap functionality; update related methods to handle simulation logic accordingly.

This commit is contained in:
2025-12-26 23:05:26 +07:00
parent 920980bb24
commit 46518f9c23
4 changed files with 8 additions and 1 deletions

View File

@@ -463,6 +463,7 @@ export type SwapParams = (
/** If presented, then it's limit swap order */ /** If presented, then it's limit swap order */
triggerPrice?: bigint; triggerPrice?: bigint;
skipSimulation?: boolean;
} & BaseOptionalParams; } & BaseOptionalParams;
export async function swap(sdk: GmxSdk, params: SwapParams) { export async function swap(sdk: GmxSdk, params: SwapParams) {
@@ -581,6 +582,7 @@ export async function swap(sdk: GmxSdk, params: SwapParams) {
allowedSlippage: params.allowedSlippageBps ?? 100, allowedSlippage: params.allowedSlippageBps ?? 100,
referralCodeForTxn: params.referralCodeForTxn, referralCodeForTxn: params.referralCodeForTxn,
triggerPrice: params.triggerPrice, triggerPrice: params.triggerPrice,
skipSimulation: params.skipSimulation,
}; };
return sdk.orders.createSwapOrder(createSwapOrderParams); return sdk.orders.createSwapOrder(createSwapOrderParams);

View File

@@ -388,6 +388,7 @@ export class Orders extends Module {
referralCodeForTxn, referralCodeForTxn,
tokensData, tokensData,
triggerPrice, triggerPrice,
skipSimulation,
}: { }: {
isLimit: boolean; isLimit: boolean;
allowedSlippage: number; allowedSlippage: number;
@@ -397,6 +398,7 @@ export class Orders extends Module {
toToken: TokenData; toToken: TokenData;
tokensData: TokensData; tokensData: TokensData;
triggerPrice?: bigint; triggerPrice?: bigint;
skipSimulation?: boolean;
}) { }) {
const orderType = isLimit ? OrderType.LimitSwap : OrderType.MarketSwap; const orderType = isLimit ? OrderType.LimitSwap : OrderType.MarketSwap;
@@ -420,6 +422,7 @@ export class Orders extends Module {
allowedSlippage, allowedSlippage,
tokensData, tokensData,
triggerPrice: isLimit && triggerPrice !== undefined ? triggerPrice : undefined, triggerPrice: isLimit && triggerPrice !== undefined ? triggerPrice : undefined,
skipSimulation,
}); });
} }

View File

@@ -26,13 +26,14 @@ export type SwapOrderParams = {
allowedSlippage: number; allowedSlippage: number;
triggerPrice?: bigint; triggerPrice?: bigint;
dataList?: string[]; dataList?: string[];
skipSimulation?: boolean;
}; };
export async function createSwapOrderTxn(sdk: GmxSdk, p: SwapOrderParams) { export async function createSwapOrderTxn(sdk: GmxSdk, p: SwapOrderParams) {
const { encodedPayload, totalWntAmount } = await getParams(sdk, p); const { encodedPayload, totalWntAmount } = await getParams(sdk, p);
const { encodedPayload: simulationEncodedPayload, totalWntAmount: simulationTotalWntAmount } = await getParams(sdk, p); const { encodedPayload: simulationEncodedPayload, totalWntAmount: simulationTotalWntAmount } = await getParams(sdk, p);
if (p.orderType !== OrderType.LimitSwap) { if (p.orderType !== OrderType.LimitSwap && !p.skipSimulation) {
await simulateExecuteOrder(sdk, { await simulateExecuteOrder(sdk, {
primaryPriceOverrides: {}, primaryPriceOverrides: {},
createMulticallPayload: simulationEncodedPayload, createMulticallPayload: simulationEncodedPayload,

View File

@@ -2972,6 +2972,7 @@ export const swapGmxTokensImpl = async (
executionFee: executionFee.feeTokenAmount, executionFee: executionFee.feeTokenAmount,
allowedSlippage: allowedSlippageBps, allowedSlippage: allowedSlippageBps,
tokensData: tokensData, tokensData: tokensData,
skipSimulation: true,
}); });
console.log('✅ Direct createSwapOrderTxn successful!'); console.log('✅ Direct createSwapOrderTxn successful!');
} }