mirror of
https://github.com/d0zingcat/solana-agent-kit.git
synced 2026-05-13 23:16:55 +00:00
fix: Allow input normal token amounts
This commit is contained in:
@@ -2,6 +2,8 @@ import { PublicKey } from "@solana/web3.js";
|
||||
import { Tool } from "langchain/tools";
|
||||
import { SolanaAgentKit } from "../../agent";
|
||||
import { BN } from "bn.js";
|
||||
import { MintLayout } from "@solana/spl-token";
|
||||
import Decimal from "decimal.js";
|
||||
|
||||
export class SolanaMeteoraCreateDynamicPool extends Tool {
|
||||
name = "meteora_create_dynamic_pool";
|
||||
@@ -10,8 +12,8 @@ export class SolanaMeteoraCreateDynamicPool extends Tool {
|
||||
Inputs (JSON string):
|
||||
- tokenAMint: string, token A mint (required).
|
||||
- tokenBMint: string, token B mint (required).
|
||||
- tokenAAmount: number, token A amount including decimals, e.g., 1000000000 (required).
|
||||
- tokenBAmount: number, token B amount including decimals, e.g., 1000000000 (required).
|
||||
- tokenAAmount: number, token A amount not including decimals, e.g., 1 (required).
|
||||
- tokenBAmount: number, token B amount not including decimals, e.g., 0.2 (required).
|
||||
- tradeFeeNumerator: number, trade fee numerator, e.g., 2500 for 2.5% (required).
|
||||
- activationType: number, pool start trading time indicator, 0 is slot and 1 is timestamp, default is 1 for timestamp (optional).
|
||||
- activationPoint: number, pool start trading slot / timestamp, default is null means pool can start trading immediately (optional).
|
||||
@@ -38,8 +40,40 @@ export class SolanaMeteoraCreateDynamicPool extends Tool {
|
||||
|
||||
const tokenAMint = new PublicKey(inputFormat.tokenAMint);
|
||||
const tokenBMint = new PublicKey(inputFormat.tokenBMint);
|
||||
const tokenAAmount = new BN(inputFormat.tokenAAmount.toString());
|
||||
const tokenBAmount = new BN(inputFormat.tokenBAmount.toString());
|
||||
|
||||
const tokenAMintInfo =
|
||||
await this.solanaKit.connection.getAccountInfo(tokenAMint);
|
||||
const tokenBMintInfo =
|
||||
await this.solanaKit.connection.getAccountInfo(tokenBMint);
|
||||
|
||||
if (!tokenAMintInfo) {
|
||||
return JSON.stringify({
|
||||
status: "error",
|
||||
message: "failed to fetch tokenAMint info",
|
||||
code: "UNKNOWN_ERROR",
|
||||
});
|
||||
}
|
||||
if (!tokenBMintInfo) {
|
||||
return JSON.stringify({
|
||||
status: "error",
|
||||
message: "failed to fetch tokenBMint info",
|
||||
code: "UNKNOWN_ERROR",
|
||||
});
|
||||
}
|
||||
|
||||
const tokenADecimals = MintLayout.decode(tokenAMintInfo.data).decimals;
|
||||
const tokenBDecimals = MintLayout.decode(tokenBMintInfo.data).decimals;
|
||||
|
||||
const tokenAAmount = new BN(
|
||||
new Decimal(inputFormat.tokenAAmount)
|
||||
.mul(10 ** tokenADecimals)
|
||||
.toString(),
|
||||
);
|
||||
const tokenBAmount = new BN(
|
||||
new Decimal(inputFormat.tokenBAmount)
|
||||
.mul(10 ** tokenBDecimals)
|
||||
.toString(),
|
||||
);
|
||||
|
||||
const tradeFeeNumerator = new BN(
|
||||
inputFormat.tradeFeeNumerator.toString(),
|
||||
|
||||
Reference in New Issue
Block a user