@okx-dex/okx-dex-sdk
Version:
OKX DEX SDK
80 lines (79 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// example.ts or test.ts
// example.ts or test.ts
const index_1 = require("../../index");
const ethers_1 = require("ethers");
require("dotenv/config");
const evm_wallet_1 = require("../../core/evm-wallet");
const provider = new ethers_1.ethers.JsonRpcProvider(process.env.EVM_RPC_URL);
const wallet = (0, evm_wallet_1.createEVMWallet)(process.env.EVM_PRIVATE_KEY, provider);
const client = new index_1.OKXDexClient({
apiKey: process.env.OKX_API_KEY,
secretKey: process.env.OKX_SECRET_KEY,
apiPassphrase: process.env.OKX_API_PASSPHRASE,
projectId: process.env.OKX_PROJECT_ID,
evm: {
wallet: wallet
}
});
const walletAddress = wallet.address;
async function main() {
var _a, _b, _c, _d, _e;
try {
// First get the swap data
const swapData = await client.dex.getSwapData({
chainIndex: '8453',
fromTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', // ETH address
toTokenAddress: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // USDC address
amount: String(10 ** 18 * 0.001),
slippagePercent: '0.005',
userWalletAddress: walletAddress,
fromTokenReferrerWalletAddress: walletAddress,
feePercent: '0.001'
});
console.log('Got swap data:', JSON.stringify(swapData, null, 2));
// Use the swap data to simulate the transaction
const params = {
chainIndex: '8453', // Base chain ID
fromAddress: ((_a = swapData.data[0].tx) === null || _a === void 0 ? void 0 : _a.from) || walletAddress,
toAddress: ((_b = swapData.data[0].tx) === null || _b === void 0 ? void 0 : _b.to) || '',
txAmount: ((_c = swapData.data[0].tx) === null || _c === void 0 ? void 0 : _c.value) || '0',
extJson: {
inputData: ((_d = swapData.data[0].tx) === null || _d === void 0 ? void 0 : _d.data) || ''
},
gasPrice: ((_e = swapData.data[0].tx) === null || _e === void 0 ? void 0 : _e.gasPrice) || '2734795',
includeDebug: true
};
console.log('Simulating transaction...');
const result = await client.dex.simulateTransaction(params);
console.log('\nTransaction Summary:');
console.log(`Success: ${result.success}`);
console.log(`Gas Used: ${result.gasUsed || 'N/A'}`);
if (!result.success) {
console.log(`\n❌ Transaction would fail! Reason: ${result.error}`);
}
else {
console.log('\n✅ Transaction would succeed!');
}
console.log('\nAsset Changes:');
result.assetChanges.forEach(asset => {
console.log(`${asset.direction}: ${asset.symbol} (${asset.type}) - ${asset.amount}`);
});
if (result.risks.length > 0) {
console.log('\n⚠️ Risks Detected:');
result.risks.forEach(risk => {
console.log(`- ${risk.addressType}: ${risk.address}`);
});
}
if (result.logs) {
console.log('\nDebug Trace:');
console.log(JSON.stringify(result.logs, null, 2));
}
}
catch (error) {
console.error('Script failed:', error);
process.exit(1);
}
}
main();