import {
Network,
CompositeClient,
LocalWallet,
SubaccountInfo,
OrderSide,
Order_TimeInForce,
SelectedGasDenom,
} from "@oraichain/lfg-client-js";
async function main() {
try {
// 1. Create wallet
const wallet = await LocalWallet.fromMnemonic(process.env.MNEMONIC!, "lfg");
console.log("Wallet address:", wallet.address);
// 2. Connect to network
const network = Network.staging();
const client = await CompositeClient.connect(network);
client.setSelectedGasDenom(SelectedGasDenom.USDC);
console.log("Connected to:", network.chainId);
// 3. Query market data
const markets = await client.indexerClient.markets.getPerpetualMarkets();
const ethMarket = markets.markets["ETH-USD"];
console.log(`ETH Price: $${ethMarket.oraclePrice}`);
// 4. Check balance
const account = await client.indexerClient.account.getParentSubaccount(
wallet.address,
0
);
console.log(`Free Collateral: $${account.subaccount.freeCollateral}`);
// 5. Place order
const currentBlock = await client.validatorClient.get.latestBlockHeight();
const goodTilBlock = currentBlock + 20;
const clientId = Math.floor(Math.random() * 100000000);
const subaccount = SubaccountInfo.forLocalWallet(wallet, 0);
const tx = await client.placeShortTermOrder(
subaccount,
"ETH-USD",
OrderSide.BUY,
3800,
0.01,
clientId,
goodTilBlock,
Order_TimeInForce.TIME_IN_FORCE_UNSPECIFIED,
false
);
console.log("✅ Order placed!");
console.log("TX Hash:", Buffer.from(tx.hash).toString("hex"));
console.log("Client ID:", clientId);
} catch (error) {
console.error("Error:", error);
}
}
main();