mirror of
https://github.com/d0zingcat/solana-agent-kit.git
synced 2026-05-14 07:26:46 +00:00
fix: Update script to create meteora dlmm pool
This commit is contained in:
@@ -379,6 +379,7 @@ export class SolanaAgentKit {
|
||||
activationType: number,
|
||||
hasAlphaVault: boolean,
|
||||
activationPoint: BN | undefined,
|
||||
computeUnitMicroLamports: number = 100000,
|
||||
): Promise<string> {
|
||||
return createMeteoraDlmmPool(
|
||||
this,
|
||||
@@ -391,6 +392,7 @@ export class SolanaAgentKit {
|
||||
activationType,
|
||||
hasAlphaVault,
|
||||
activationPoint,
|
||||
computeUnitMicroLamports,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { PublicKey } from "@solana/web3.js";
|
||||
import { BN } from "bn.js";
|
||||
|
||||
/**
|
||||
* Common token addresses used across the toolkit
|
||||
|
||||
@@ -15,7 +15,6 @@ import {
|
||||
CreateSingleOptions,
|
||||
StoreInitOptions,
|
||||
} from "@3land/listings-sdk/dist/types/implementation/implementationTypes";
|
||||
import { METEORA_DYNAMIC_FEE_DENOMINATOR, TOKENS } from "../constants";
|
||||
|
||||
export class SolanaBalanceTool extends Tool {
|
||||
name = "solana_balance";
|
||||
@@ -1346,8 +1345,6 @@ export class SolanaMeteoraCreateDynamicPool extends Tool {
|
||||
}
|
||||
const inputFormat: CreateMeteoraDynamicAmmPoolInput = JSON.parse(input);
|
||||
|
||||
console.log(inputFormat);
|
||||
|
||||
const tokenAMint = new PublicKey(inputFormat.tokenAMint);
|
||||
const tokenBMint = new PublicKey(inputFormat.tokenBMint);
|
||||
const tokenAAmount = new BN(inputFormat.tokenAAmount.toString());
|
||||
@@ -1400,11 +1397,12 @@ export class SolanaMeteoraCreateDlmmPool extends Tool {
|
||||
- tokenBMint: string, token B mint (required).
|
||||
- binStep: number, pool bin step, e.g., 20 (required).
|
||||
- initialPrice: number, pool initial price, e.g., 0.25 (required).
|
||||
- fee: number, trade fee in percentage, e.g. 0.2 (required).
|
||||
- feeBps: number, trade fee in percentage, e.g. 20 for 0.2% (required).
|
||||
- priceRoundingUp: boolean, whether the initial price should be rounded up or not, default is true (optional).
|
||||
- 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).
|
||||
- hasAlphaVault: boolean, whether the pool supports alpha vault, default is false (optional).
|
||||
- computeUnitMicroLamports: number, the priority fee in micro-lamports unit, default is 100000 (optional).
|
||||
`;
|
||||
|
||||
constructor(private solanaKit: SolanaAgentKit) {
|
||||
@@ -1418,27 +1416,28 @@ export class SolanaMeteoraCreateDlmmPool extends Tool {
|
||||
tokenBMint: string;
|
||||
binStep: number;
|
||||
initialPrice: number;
|
||||
fee: number;
|
||||
feeBps: number;
|
||||
priceRoundingUp?: boolean;
|
||||
activationType?: number;
|
||||
activationPoint?: number;
|
||||
hasAlphaVault?: boolean;
|
||||
computeUnitMicroLamports?: number;
|
||||
}
|
||||
const inputFormat: CreateMeteoraDlmmPoolInput = JSON.parse(input);
|
||||
|
||||
console.log(inputFormat);
|
||||
|
||||
const tokenAMint = new PublicKey(inputFormat.tokenAMint);
|
||||
const tokenBMint = new PublicKey(inputFormat.tokenBMint);
|
||||
const binStep = inputFormat.binStep;
|
||||
const initialPrice = inputFormat.initialPrice;
|
||||
const feeBps = inputFormat.fee * 10000;
|
||||
const feeBps = inputFormat.feeBps;
|
||||
const priceRoundingUp = inputFormat.priceRoundingUp ?? true;
|
||||
const activationType = inputFormat.activationType ?? 1;
|
||||
const activationPoint = inputFormat.activationPoint
|
||||
? new BN(inputFormat.activationPoint)
|
||||
: undefined;
|
||||
const hasAlphaVault = inputFormat.hasAlphaVault ?? false;
|
||||
const computeUnitMicroLamports =
|
||||
inputFormat.computeUnitMicroLamports ?? 100000;
|
||||
|
||||
const txId = await this.solanaKit.meteoraCreateDlmmPool(
|
||||
tokenAMint,
|
||||
@@ -1450,6 +1449,7 @@ export class SolanaMeteoraCreateDlmmPool extends Tool {
|
||||
activationType,
|
||||
hasAlphaVault,
|
||||
activationPoint,
|
||||
computeUnitMicroLamports,
|
||||
);
|
||||
|
||||
return JSON.stringify({
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { SolanaAgentKit } from "../agent";
|
||||
import BN from "bn.js";
|
||||
import { PublicKey, sendAndConfirmTransaction } from "@solana/web3.js";
|
||||
import {
|
||||
ComputeBudgetProgram,
|
||||
PublicKey,
|
||||
sendAndConfirmTransaction,
|
||||
} from "@solana/web3.js";
|
||||
import DLMM, { ActivationType } from "@meteora-ag/dlmm";
|
||||
import { getMint } from "@solana/spl-token";
|
||||
|
||||
@@ -29,6 +33,7 @@ export async function createMeteoraDlmmPool(
|
||||
activationType: ActivationType,
|
||||
hasAlphaVault: boolean,
|
||||
activationPoint: BN | undefined,
|
||||
computeUnitMicroLamports: number,
|
||||
): Promise<string> {
|
||||
const tokenAMintInfo = await getMint(agent.connection, tokenAMint);
|
||||
const tokenBMintInfo = await getMint(agent.connection, tokenBMint);
|
||||
@@ -45,6 +50,17 @@ export async function createMeteoraDlmmPool(
|
||||
!priceRoundingUp,
|
||||
);
|
||||
|
||||
// console.log(`>>> Creating Meteora DLMM pool...`);
|
||||
// console.log(`- Using tokenAMint: ${tokenAMint.toString()}`);
|
||||
// console.log(`- Using tokenBMint: ${tokenBMint.toString()}`);
|
||||
// console.log(`- Using binStep: ${binStep}`);
|
||||
// console.log(`- Using initialPrice: ${initialPrice}`);
|
||||
// console.log(`- Using priceRoundingUp: ${priceRoundingUp}`);
|
||||
// console.log(`- Using feeBps ${feeBps}`);
|
||||
// console.log(`- Using activationType: ${activationType}`);
|
||||
// console.log(`- Using activationPoint: ${activationPoint?.toString()}`);
|
||||
// console.log(`- Using hasAlphaVault: ${hasAlphaVault}`);
|
||||
|
||||
const initPoolTx = await DLMM.createCustomizablePermissionlessLbPair(
|
||||
agent.connection,
|
||||
new BN(binStep),
|
||||
@@ -56,6 +72,14 @@ export async function createMeteoraDlmmPool(
|
||||
hasAlphaVault,
|
||||
agent.wallet_address,
|
||||
activationPoint,
|
||||
{
|
||||
cluster: "mainnet-beta",
|
||||
},
|
||||
);
|
||||
initPoolTx.add(
|
||||
ComputeBudgetProgram.setComputeUnitPrice({
|
||||
microLamports: computeUnitMicroLamports,
|
||||
}),
|
||||
);
|
||||
|
||||
const initPoolTxHash = await sendAndConfirmTransaction(
|
||||
@@ -67,5 +91,7 @@ export async function createMeteoraDlmmPool(
|
||||
throw err;
|
||||
});
|
||||
|
||||
// console.log(`<<< Finished creating Meteora DLMM pool.`);
|
||||
|
||||
return initPoolTxHash;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,20 @@ export async function createMeteoraDynamicAMMPool(
|
||||
customizableParams: CustomizableParams,
|
||||
computeUnitMicroLamports: number,
|
||||
): Promise<string> {
|
||||
// console.log(`>>> Creating Meteora Dynamic Pool...`);
|
||||
// console.log(`- Using tokenAMint: ${tokenAMint.toString()}`);
|
||||
// console.log(`- Using tokenBMint: ${tokenBMint.toString()}`);
|
||||
// console.log(`- Using tokenAAmount: ${tokenAAmount.toString()}`);
|
||||
// console.log(`- Using tokenBAmount: ${tokenBAmount.toString()}`);
|
||||
// console.log(
|
||||
// `- Using tradeFeeNumerator ${customizableParams.tradeFeeNumerator}`,
|
||||
// );
|
||||
// console.log(`- Using activationType: ${customizableParams.activationType}`);
|
||||
// console.log(
|
||||
// `- Using activationPoint: ${customizableParams.activationPoint?.toString()}`,
|
||||
// );
|
||||
// console.log(`- Using hasAlphaVault: ${customizableParams.hasAlphaVault}`);
|
||||
|
||||
const initPoolTx =
|
||||
await AmmImpl.createCustomizablePermissionlessConstantProductPool(
|
||||
agent.connection,
|
||||
@@ -57,6 +71,7 @@ export async function createMeteoraDynamicAMMPool(
|
||||
console.error(err);
|
||||
throw err;
|
||||
});
|
||||
// console.log(`<<< Finished creating Meteora Dynamic Pool.`);
|
||||
|
||||
return initPoolTxHash;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user